package com.zwh.se.collection.map;

import java.util.Comparator;
import java.util.TreeMap;

/**
 * @author yexi
 * 特点：唯一、有序(按照升序或降序)
 * 原理：红黑树(二叉树)。key遵照红黑树的特点。
 * 放入集合的key的数据类型内部一定要实现比较器(不实现的话TreeMap不知道该如何帮你排序)
 */
public class TreeMapDemo {
    public static void main(String[] args) {

        TreeMap<String, Integer> map = new TreeMap<>(new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                //比较,谁长度比较长就谁排在后面
                return s1.length() - s2.length();
            }
        });
        //通过String类的外部比较器进行排序
        map.put("blili", 1234);
        map.put("alili", 2345);
        map.put("blili", 5467);
        map.put("clili", 5678);
        map.put("dlili", 2345);
        //由于TreeMap的比较器排序实现比较微妙,当比较规则返回0时会被认为是同一个对象,从而导致了数据的丢失
        System.out.println(map.size());
        System.out.println(map);

        TreeMap<String, Integer> treeMap = new TreeMap<>();
        //通过String类的内部比较器进行排序
        treeMap.put("blili", 1234);
        treeMap.put("alili", 2345);
        treeMap.put("blili", 5467);
        treeMap.put("clili", 5678);
        treeMap.put("dlili", 2345);
        System.out.println(treeMap);


    }
}
